<?php
/*
 * IKPHP 爱客开源社区 @copyright (c) 2012-3000 IKPHP All Rights Reserved 
 * @author 小麦
 * @Email:ikphp@sina.cn
 * 爱客网全站插件入口
 */
namespace IKPHP\Plugins;
use Phalcon\Mvc\User\Plugin;

class BasePlugin extends Plugin{

	protected $view = null;
	public $plugin_name  ='';
	public $data = '';
	
    /**
     * 构造方法，用于实例化一个插件处理对象
     * @param string $pluginname 要使用配置
     */
    public function __construct($pluginname = ''){
    	 $this->plugin_name = $pluginname;  
    	 $this->view = $this->getDI()->get('view');
    }
	
    /**
     * 调用插件
     * @param string $name   插件名称
     * @param string $method 钩子名称(方法)
	 * @param mixed  $params 传入参数
	 * @return void
     */
	public function get($method, $params = array()){ 
		if(empty($method)) return;
		$result = $this->exec($method, $params);
		if(false === $result) {
	    	// 如果返回false 则中断插件执行
        	return;
        }
		return;
	}
	
	//安装插件
	public function install(){}
	//卸载插件
	public function uninstall(){}
	
    /**
     * 执行某个插件
     * @param string $name 插件名称 Editor\\EditorPlugin
     * @param string $method 方法名（标签名）     
     * @param Mixed  $params 传入的参数
     * @return void
     */
    final protected function exec($method, &$params = NULL) {  
    	$name = $this->plugin_name; 
		$class   =  "IKPHP\Plugins\\{$name}\\{$name}Plugin"; 
		if(class_exists($class)){ 
		    $plugin   = new $class($this->plugin_name);
	        if(method_exists($plugin, $method)){
	        	return $plugin->$method($params);
	        }
	        return false;
		}
        return false;
    }
    /**
     * 模板变量赋值
     * @access protected
     * @param  array $params 要显示的模板变量必须是数组
     * @return Action
     */
    final protected function assign($params) {
        $this->data = $params;
    }
    //显示方法
    final protected function display($template=''){ 
        if($template == '')
            $template = CONTROLLER_NAME;
            $this->fetch($template);
        	//echo ($this->fetch($template));
    }  
    //用于显示模板的方法
    final protected function fetch($templateFile = CONTROLLER_NAME){ 
        if(!is_file($templateFile)){
            $templateFile = PLUGINS_PATH.$this->plugin_name.'/'.$templateFile; 
            if(!is_file($templateFile)){
            	$this->logger->log('模板不存在:'.$templateFile);
            	return;
            }else{
            	$volt = $this->getDI()->getShared('volt');
            	//$compiler = $this->getDI()->getShared('volt')->getCompiler();
		   		//$compiler->compile($templateFile);
		   		//require $compiler->getCompiledTemplatePath();
		   		$volt->render($templateFile,$this->data);
            }
        }
    }         	
}